package com.example.config;/**
 * @Author kzc
 * @Date 2023/4/18 21:17 （可以根据需要修改）
 * @作用
 */


import cn.hutool.json.JSONUtil;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.common.utils.HttpUtil;
import com.example.tools.Result;
import lombok.extern.java.Log;
import lombok.extern.log4j.Log4j;

import java.util.HashMap;
import java.util.Map;

/**
 * @作用: business
 *
 * @说明:
 *
 * @author: kzc
 *
 * @日期: 2023-04-18 21:17
 **/


@Log
public class WechatUtil {

    public static JSONObject getSessionKeyOrOpenId(String code) {
        String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
        Map<String, String> requestUrlParam = new HashMap<>();
        // https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=164113089&lang=zh_CN
        //小程序appId
        requestUrlParam.put("appid", WXConstant.APPID);
        //小程序secret
        requestUrlParam.put("secret", WXConstant.SECRET);
        //小程序端返回的code
        requestUrlParam.put("js_code", code);
        //默认参数
        requestUrlParam.put("grant_type", "authorization_code");
        //发送post请求读取调用微信接口获取openid用户唯一标识
        JSONObject jsonObject = JSON.parseObject(HttpClientUtil.doPost(requestUrl, requestUrlParam));
        return jsonObject;
    }

//    public String getSessionKeyByWX(String code) {
//        String baseUrl = WXConstant.ONLINE_PEOPLE_URL + "?appid=" + WXConstant.APPID + "&secret=" + WXConstant.SECRET + "&js_code=" + code + "&grant_type=authorization_code";
//        log.info("---微信登陆，通过code获取sessionkey");
//        log.info("---baseUrl ="+baseUrl);
//        //使用 hutool 发起get请求
//        //基于JDK的HttpUrlConnection封装
//        String result = HttpClientUtil.doPost(baseUrl);
//        log.info("---拿到GET结果 ="+result);
//        //使用 hutool 解析json
//        JSONObject jsonObject = JSONUtil.parseObj(result);
//        if(!jsonObject.isNull("session_key")) {
//            //成功获取到session_key等数据
//            return result.substring(0,result.length()-1)+",\"isSuccess\":\"true\"}";
//        }else {
//            //失败，没获取到session_key等数据
//            return "{\"session_key\":\"\",\"openid\":\"\",\"isSuccess\":\"false\"}";
//        }
//    }


    /**
     * 微信登陆，通过code获取session_key
     * @param code 通过wx.login获取到的用户的code（登录凭证）
     * @return 返回session_key，用于解密 前端wx.getUserProfile接口 返回的加密的用户数据（2022-11，微信已弃用该接口，已无法通过其获取用户信息）。
     */
//    public Result<String> getSessionKey(String code) {
//        //使用 hutool 解析json
//        JSONObject json = JSONUtil.parseObj(getSessionKeyByWX(code));
//        if(json.getBool("isSuccess")) {
//            log.info("isSuccess = true，成功获取到session_key。session_key = "+json.getStr("session_key"));
//            return Result.ok(json.getStr("session_key"));
//        }else {
//            // 记录日志
////            log.error("获取sessionkey失败! code = "+code);
//            System.out.println("失败 code="+code);
//            return Result.fail("获取sessionkey失败! code = "+code);
//        }
//    }

}
